package com.chenfan.filestore.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chenfan.ccp.common.result.R;
import com.chenfan.ccp.plug.business.annotation.LogProperty;
import com.chenfan.ccp.plug.business.annotation.LogRecord;
import com.chenfan.filestore.dto.BatchImportTemplateDTO;
import com.chenfan.filestore.dto.BatchImportTemplateQueryDTO;
import com.chenfan.filestore.service.biz.BatchImportTemplateBiz;
import com.chenfan.filestore.vo.BatchExportTemplateVO;
import com.chenfan.filestore.vo.BatchImportTemplateVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.io.FileNotFoundException;

/**
 * @author K
 * @date 2023/5/15 2:07 PM
 */
@RestController
@RequestMapping("/batch/import/template")
public class BatchImportTemplateController {

    @Autowired
    private BatchImportTemplateBiz batchImportTemplateBiz;

    /**
     * 创建导入模板
     * @param batchImportTemplateDTO 导入参数
     * @return 导入id
     */
    @LogRecord(bizType = "420006", actionName = "导入模板新增", recordFields = {
            @LogProperty(field = "导入模板新增", afterValue = "导入模板新增", subBizNo = "#batchImportTemplateDTO.templateId")
    })
    @PostMapping("")
    public R<String> createBatchImportTemplate(@RequestBody BatchImportTemplateDTO batchImportTemplateDTO) throws Exception {
        Long batchImportTemplate = batchImportTemplateBiz.createBatchImportTemplate(batchImportTemplateDTO);
        batchImportTemplateDTO.setTemplateId(batchImportTemplate);
        return R.data(batchImportTemplate.toString());
    }

    /**
     * 模板id
     * @param templateId 模板id
     * @return
     */
    @GetMapping("{templateId}")
    public R<BatchImportTemplateVO> getBatchImportTemplate(@PathVariable Long templateId) {
        return R.ok(batchImportTemplateBiz.getBatchImportTemplateById(templateId));
    }

    /**
     * 更新模板
     * @param templateId 模板id
     * @param batchImportTemplateDTO 参数
     * @return
     * @throws Exception
     */
    @LogRecord(bizType = "420006", actionName = "导入模板更新", recordFields = {
            @LogProperty(field = "导入模板更新", afterValue = "导入模板更新", subBizNo = "#templateId")
    })
    @PutMapping("{templateId}")
    public R<Void> updateBatchImportTemplate(@PathVariable Long templateId,
                                             @RequestBody BatchImportTemplateDTO batchImportTemplateDTO) throws Exception {
        batchImportTemplateDTO.setTemplateId(templateId);
        batchImportTemplateBiz.updateBatchImportTemplate(batchImportTemplateDTO);
        return R.ok();
    }

    @PostMapping("/page")
    public R<Page<BatchImportTemplateVO>> pageBatchImportTemplate(@RequestBody BatchImportTemplateQueryDTO query) {
        return R.data(batchImportTemplateBiz.pageBatchImportTemplate(query));
    }

    /**
     * 下载模板
     * @param templateCode
     * @return
     */
    @GetMapping("{templateCode}/download")
    public R<BatchImportTemplateVO> getBatchImportTemplate(@PathVariable String templateCode) {
        return R.data(batchImportTemplateBiz.getBatchImportTemplate(templateCode));
    }

    /**
     * 更改状态
     * @param templateId 模板id
     * @param status 状态
     * @return
     */
    @PutMapping("{templateId}/status")
    public R<Void> switchStatus(
            @PathVariable Long templateId, Integer status) {
        batchImportTemplateBiz.switchStatus(templateId, status);
        return R.ok();
    }
}
